The present invention relates to issuing credits for transferring data packets in a distributed switch, and more specifically, to allocating credits when the capacity of a buffer exceeds the total number of credits a transmitting entity is designed to manage.
Computer systems often use multiple computers that are coupled together in a common chassis. The computers may be separate servers that are coupled by a common backbone within the chassis. Each server is a pluggable board that includes at least one processor, an on-board memory, and an Input/Output (I/O) interface. Further, the servers may be connected to a switch to expand the capabilities of the servers. For example, the switch may permit the servers to access additional Ethernet networks or PCIe slots, as well as permit communication between servers in the same or different chassis.
The switch may use credits to transmit data within the switch. Generally, the credits ensure that a transmitting entity does not transmit more data than can be stored by a receiving entity. As the receiving entity forwards received packets to their ultimate destinations, the receiving entity returns a credit to the transmitting entity which the transmitting entity may then use to send another packet to the receiving entity.